package com.pig4cloud.pigx.common.websocket.vo;

import lombok.Data;

/**
 * WebSocket返回结果
 *
 * @date 2022/8/26 12:00
 */
@Data
public class WebSocketRes<T, E> {
	/**
	 * 状态码
	 */
	private Integer code;
	/**
	 * 是否成功
	 */
	private Boolean isSuccess;
	/**
	 * 数据
	 */
	private T data;
	/**
	 * 消息
	 */
	private String msg;
	/**
	 * 消息类型，便于前端判断是哪个webSocket返回的信息
	 */
	private String type;
	/**
	 * 前端传入的消息，便于前端判断
	 */
	private E message;

	/**
	 * /**
	 * 全参构造函数
	 *
	 * @param code      状态码
	 * @param isSuccess 是否成功
	 * @param data      数据
	 * @param msg       消息
	 * @param type      消息类型
	 * @param message   前端传入的消息
	 * @return {@link }
	 * @date 2022/8/29 16:05
	 */
	public WebSocketRes(Integer code, Boolean isSuccess, T data, String msg, String type, E message) {
		this.code = code;
		this.isSuccess = isSuccess;
		this.data = data;
		this.msg = msg;
		this.type = type;
		this.message = message;
	}

	/**
	 * 成功，返回数据
	 *
	 * @param data    数据
	 * @param type    消息类型
	 * @param message 前端传入的消息
	 * @return {@link WebSocketRes<T, E>}
	 * @date 2022/8/26 12:03
	 */
	public static <T, E> WebSocketRes<T, E> success(T data, String type, E message) {
		return new WebSocketRes<>(200, true, data, "操作成功", type, message);
	}

	/**
	 * 成功，返回消息
	 *
	 * @param msg     消息
	 * @param type    消息类型
	 * @param message 前端传入的消息
	 * @return {@link WebSocketRes<Object, E>}
	 * @date 2022/8/26 12:03
	 */
	public static <Object, E> WebSocketRes<Object, E> success(String msg, String type, E message) {
		return new WebSocketRes<>(200, true, null, msg, type, message);
	}

	/**
	 * 失败，返回消息
	 *
	 * @param msg     消息
	 * @param type    消息类型
	 * @param message 前端传入的消息
	 * @return {@link WebSocketRes<Object, E>}
	 * @date 2022/8/26 12:03
	 */
	public static <Object, E> WebSocketRes<Object, E> fail(String msg, String type, E message) {
		return new WebSocketRes<>(500, false, null, msg, type, message);
	}
}
